<?php   
class Suppliy extends IController
{
    public function lists()
    {

    }

    public function add()
    {
        if (IReq::getMethod() === 'POST') {
            $reqTime = ITime::getDateTime(); //请求时间

            // 准备入库数据（匹配saas_sample字段）
            $params_data = [
                'id' => Common::create_uuid(), // 生成36位UUID
                'category' => IFilter::act(IReq::input('category')), // 分类
                'sample_date' => IFilter::act(IReq::input('sample_date')), // 留样日期
                'meal_time' => IFilter::act(IReq::input('meal_time')), // 餐次
                'dish_name' => IFilter::act(IReq::input('dish_name')), // 菜品名称
                'dish_image' => IFilter::act(IReq::input('dish_image')), // 菜品图片URL
                'remark' => IFilter::act(IReq::input('remark')), // 备注
                'created_at' => $reqTime,
                'updated_at' => $reqTime,
                'deleted_at' => null
            ];
            // 验证必填参数
            $requiredFields = ['category', 'sample_date', 'meal_time', 'dish_name', 'dish_image']; // 根据实际需求调整必填字段
            $validateResult = $this->validateRequiredFields($params_data, $requiredFields);
            if (!$validateResult['status']) {
                JSON::jsonErr(100002, $validateResult['message']);
            }
            // 验证日期格式
            if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $params_data['sample_date'])) {
                JSON::jsonErr(100002, '留样日期格式错误');
            }
            
            // 验证餐次是否为1-6的整数
            $mealTime = $params_data['meal_time'];
            if (!is_numeric($mealTime) || (int)$mealTime < 1 || (int)$mealTime > 6) {
                JSON::jsonErr(100002, '餐次格式错误，有效值为1-6的整数（1:早餐, 2:间点, 3:午餐, 4:下午茶, 5:晚餐, 6:夜宵）');
            }
            // 验证菜品名称长度
            if (mb_strlen($params_data['dish_name']) > 50) {
                JSON::jsonErr(100002, '菜品名称长度不能超过50个字符');
            }
            // 验证菜品图片URL格式      
            if (!preg_match('/^https?:\/\/(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(?:\/[^\s]*)?$/', $params_data['dish_image'])) {
                JSON::jsonErr(100002, '菜品图片URL格式错误');
            }
            // 验证备注长度
            if (mb_strlen($params_data['remark']) > 255) {
                JSON::jsonErr(100002, '备注长度不能超过255个字符');
            }
            // 插入菜品留样数据
            try {
                $sampleObj = new IModel('sample');
                $sampleObj->setData($params_data);
                $sampleObj->add();
                JSON::jsonSuccess();
            } catch (\Exception $e) {
                JSON::jsonErr(100002, '', ['return_code' => $e->getCode(), 'return_msg' => $e->getMessage()]);
            }
        } else {
            JSON::jsonErr(100002, '请求方法错误');
        }
    }
}